/*====================================================================================
# Module of «ДЭНСИ: КАССА» complex is the front-office application for POS-systems based on fiscal registrators.
# © 2010, Kostuchenko Alexey (leo-dead@mail.ru).
# This is a FREE software, licensed under GNU/GPL terms. See details in LICENSING_ENG.TXT in main directory
#====================================================================================
# Модуль программного комплекса «ДЭНСИ: КАССА» - рабочее место кассира для POS-систем на базе фискальных регистраторов
# © 2010, Костюченко Алексей (leo-dead@mail.ru).
# Данная программа является свободным программным обеспечением, выпускается на условиях Стандартной Общественной Лицензии GNU/GPL
# Подробнее смотрите в файле LICENSING_RUS.TXT в основной директории
#====================================================================================*/

#ifndef SETUP_CYBERPLAT_CLASS
#define SETUP_CYBERPLAT_CLASS 1

#include <string>
#include "class_pgsql.h"

using namespace std;

struct TCyberplatBarcode {
    char operator_id[10];
    char internal_id[20];
    char pattern[100];
    char replacement[100];
};

struct TCyberplatOperator {
    char operator_id[10];
    char operator_name[255];
    char checkurl[255];
    char payurl[255];
    char statusurl[255];
    char account[64];
    char fee[10];
};

class SetupCyberplat : public PGSQL
{
public:
    SetupCyberplat();
    SetupCyberplat(const char *conf_path);
    SetupCyberplat(char *dbname, char *user, char *password, char *host, char *hostaddr, char *port, const char* log_path);
    ~SetupCyberplat();
    
    int SelectActiveScheme();
    int SetScheme(const char *scheme_name);

    int GetBarcodes(TCyberplatBarcode *&codes, int &count);
    int DeleteBarcodes();
    int AddBarcode(TCyberplatBarcode code);

    int GetOperators(TCyberplatOperator *&operators, int &count);
    int GetOperatorById(int operator_id, TCyberplatOperator *&op);
    int DeleteOperators();
    int AddOperator(TCyberplatOperator op);

    const char *GetProxy();
    const char *GetSSL();
    int GetTimeout();
    const char *GetPointSD();
    const char *GetPointAP();
    const char *GetPointOP();
    const char *GetPointKeys();
    const char *GetPointPass();
    const char *GetBankKey();

private:
    string scheme_id;
    string scheme_name;

    string proxy;
    string SSL;
    string sd;
    string ap;
    string op;
    string keys;
    string pass;
    string bankkey;

    int GetParam(const char *param_name);
    int GetStringParam(const char *param_name);
    int GetParam(const char *param_name, bool *param_value);
    int GetParam(const char *param_name, int *param_value);
    int GetParam(const char *param_name, char *&param_value);
    int GetParam(const char *param_name, double *param_value);
};

#endif
